#ifndef SERIALTHREAD_H
#define SERIALTHREAD_H

#include <QThread>

#include "serialport.h"
#include "protocol.h"

class SerialThread : public QThread
{
    Q_OBJECT

signals:
    void signalWarnInfo(int flag);
    void signalModeInfo(int flag);
    void signalBeepStatu(bool on);
    void signalTempValue(int flag, QString value);
    void signalHumiValue(int flag, QString value);
    void signalShowRecvData(QByteArray ba);

public slots:
    void slotReadyRead(QByteArray ba);

public:
    explicit SerialThread(QThread *parent = 0);
    ~SerialThread();

    bool openSerialPort();
    void closeSerialPort(void);
    void sendDataToSerial(const QByteArray &msg);

    bool gainCompleteMsg(void);
    void parseDevMsg(void);

    void parseWarnDev(void);
    void parseBeepDev(void);
    void parseModeDev(void);
    void parseTempDev(void);
    void parseHumiDev(void);

protected:
    void run(void);

private:
    bool m_isExit;
    Protocol m_protocol;
    SerialPort *m_serialport;
};

#endif // SERIALTHREAD_H
